package com.wwz.leetcode;


import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>Description:</p>
 * <p>Copyright: Copyright (c)2020</p>
 * <p>Company: Tope</p>
 * <P>Created Date :2020-07-31</P>
 * <P>@version 1.0</P>
 */
public class LeetCode0731 {
    public static void main(String[] args) {
        int [] nums = {0, 2, 3, 4, 5};
        int magicIndex = findMagicIndex(nums);
        System.out.println(magicIndex);
    }
    /**
    * @Description: 魔术索引。 在数组A[0...n-1]中，有所谓的魔术索引，满足条件A[i] = i。
     * 给定一个有序整数数组，编写一种方法找出魔术索引，若有的话，在数组A中找出一个魔术索引，
     * 如果没有，则返回-1。若有多个魔术索引，返回索引值最小的一个
    * @create: 2020-07-31 10:29
    * @update logs
    * @throws Exception
    */
    public static int findMagicIndex(int[] nums) {
        List<Integer> xx = new ArrayList<Integer>();
        Map<String,Object> resultMap = new HashMap<String,Object>();
        for (int i = 0; i <nums.length ; i++) {
            if(i==nums[i]){
                xx.add(i);
                resultMap.put(String.valueOf(i),nums[i]);
            }
        }
        if(xx.size()==0) {
            return -1;
        }else {
            Integer min = Collections.min(xx);
            return Integer.valueOf(resultMap.get(min.toString()).toString());
        }
    }
}
